What is normalize-url?
The normalize-url npm package is used to normalize and sanitize URLs to ensure they have a standard and consistent format. It can be used to remove tracking parameters, sort query parameters, remove default ports, and more.
What are normalize-url's main functionalities?
Normalizing URLs
This feature allows you to normalize a URL by converting it to a standard format. It can remove or add 'http://', sort query parameters, and convert the hostname to lowercase.
"use strict";
const normalizeUrl = require('normalize-url');
console.log(normalizeUrl('sindresorhus.com')); // Output: 'http://sindresorhus.com'
console.log(normalizeUrl('HTTP://xn--xample-hva.com:80/?b=bar&a=foo')); // Output: 'http://êxample.com/?a=foo&b=bar'"
Removing URL Tracking Parameters
This feature allows you to remove URL tracking parameters like 'utm_source' and 'utm_medium' by using a regular expression.
"use strict";
const normalizeUrl = require('normalize-url');
console.log(normalizeUrl('www.sindresorhus.com?utm_source=foo&utm_medium=bar', {removeQueryParameters: [/^utm_/]})); // Output: 'http://sindresorhus.com'"
Removing Default Ports
This feature removes the default ports from URLs (port 80 for HTTP and port 443 for HTTPS).
"use strict";
const normalizeUrl = require('normalize-url');
console.log(normalizeUrl('http://sindresorhus.com:80')); // Output: 'http://sindresorhus.com'
console.log(normalizeUrl('https://sindresorhus.com:443')); // Output: 'https://sindresorhus.com'"
Forcing HTTPS
This feature allows you to force the URL to use HTTPS instead of HTTP.
"use strict";
const normalizeUrl = require('normalize-url');
console.log(normalizeUrl('http://sindresorhus.com', {forceHttps: true})); // Output: 'https://sindresorhus.com'"
Other packages similar to normalize-url
url-parse
The url-parse package offers similar URL parsing and normalization functionalities. It provides a more detailed breakdown of URL components and allows manipulation of these components individually.
urijs
URI.js is a library for working with URLs. It includes URL manipulation and normalization features, but also offers more extensive options for working with URIs, such as resolving URIs, managing URI components, and building URIs from templates.
normalize-url
Normalize a URL
Useful when you need to display, store, deduplicate, sort, compare, etc, URLs.
Install
$ npm install normalize-url
Usage
const normalizeUrl = require('normalize-url');
normalizeUrl('sindresorhus.com');
normalizeUrl('HTTP://xn--xample-hva.com:80/?b=bar&a=foo');
API
normalizeUrl(url, options?)
url
Type: string
URL to normalize, including data URL.
options
Type: object
defaultProtocol
Type: string
Default: http:
normalizeProtocol
Type: boolean
Default: true
Prepend defaultProtocol
to the URL if it's protocol-relative.
normalizeUrl('//sindresorhus.com:80/');
normalizeUrl('//sindresorhus.com:80/', {normalizeProtocol: false});
forceHttp
Type: boolean
Default: false
Normalize https:
to http:
.
normalizeUrl('https://sindresorhus.com:80/');
normalizeUrl('https://sindresorhus.com:80/', {forceHttp: true});
forceHttps
Type: boolean
Default: false
Normalize http:
to https:
.
normalizeUrl('https://sindresorhus.com:80/');
normalizeUrl('http://sindresorhus.com:80/', {forceHttps: true});
This option can't be used with the forceHttp
option at the same time.
stripAuthentication
Type: boolean
Default: true
Strip the authentication part of the URL.
normalizeUrl('user:password@sindresorhus.com');
normalizeUrl('user:password@sindresorhus.com', {stripAuthentication: false});
stripHash
Type: boolean
Default: false
Strip the hash part of the URL.
normalizeUrl('sindresorhus.com/about.html#contact');
normalizeUrl('sindresorhus.com/about.html#contact', {stripHash: true});
stripProtocol
Type: boolean
Default: false
Remove HTTP(S) protocol from the URL: http://sindresorhus.com
→ sindresorhus.com
.
normalizeUrl('https://sindresorhus.com');
normalizeUrl('sindresorhus.com', {stripProtocol: true});
stripWWW
Type: boolean
Default: true
Remove www.
from the URL.
normalizeUrl('http://www.sindresorhus.com');
normalizeUrl('http://www.sindresorhus.com', {stripWWW: false});
removeQueryParameters
Type: Array<RegExp | string>
Default: [/^utm_\w+/i]
Remove query parameters that matches any of the provided strings or regexes.
normalizeUrl('www.sindresorhus.com?foo=bar&ref=test_ref', {
removeQueryParameters: ['ref']
});
removeTrailingSlash
Type: boolean
Default: true
Remove trailing slash.
Note: Trailing slash is always removed if the URL doesn't have a pathname.
normalizeUrl('http://sindresorhus.com/redirect/');
normalizeUrl('http://sindresorhus.com/redirect/', {removeTrailingSlash: false});
normalizeUrl('http://sindresorhus.com/', {removeTrailingSlash: false});
removeDirectoryIndex
Type: boolean | Array<RegExp | string>
Default: false
Removes the default directory index file from path that matches any of the provided strings or regexes. When true
, the regex /^index\.[a-z]+$/
is used.
normalizeUrl('www.sindresorhus.com/foo/default.php', {
removeDirectoryIndex: [/^default\.[a-z]+$/]
});
sortQueryParameters
Type: boolean
Default: true
Sorts the query parameters alphabetically by key.
normalizeUrl('www.sindresorhus.com?b=two&a=one&c=three', {
sortQueryParameters: false
});
Related